#include <stdlib.h>
#include <stdio.h>
#include <pthread.h>

//linux下编译 gcc test.c -lpthread -o testAPP  // 注意别漏了软连接

// 一个函数可以被多个线程调用
void* myfunc(void* args)
{
    //这是线程体
	char *name = (char *)args;
    printf("这是我创建的第一个线程tid = %ld\n", (unsigned long)pthread_self());	// windows下无法运行，只能linux下执行
	for(int i = 0; i< 50; i++){
		printf("%s: %d\n", name, i);
	}
	printf("========myfunc1==========");
    return NULL;
}



int main(void)
{
    int ret = 0;
	pthread_t th1;      // 定义一个线程结构体
	pthread_t th2; 
	
	// 第4个参数即传入myfunc的void* args
    ret = pthread_create(&th1, NULL, myfunc, "th1");     // 创建线程，注意第3个参数的格式很重要
    if(ret){
        fprintf(stderr, "pthread create error\n");
        exit(EXIT_FAILURE);
    }
	
	ret = pthread_create(&th2, NULL, myfunc, "th2");     // 创建线程，注意第3个参数的格式很重要
    if(ret){
        fprintf(stderr, "pthread create error\n");
        exit(EXIT_FAILURE);
    }
	
    //printf("这是主线程 = %ld\n", (unsigned long)&tid);
	pthread_join(th1, NULL); // 等待子线程结束，不然还没来得及运行子线程内容整个程序就退出了
	pthread_join(th2, NULL); 
	
	return 0;
}

